import com.cos.lession69.dao.EmpMapper;
import com.cos.lession69.entity.Emp;
import com.cos.lession69.util.MybatisUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

/**
 * @author: COS
 * @time: 2022/9/23 9:47
 * @description:
 * 1级缓存 默认开启
 * 就是在同一个SqlSession的范围内的相同的sql查询
 * 第一次查询会访问数据库,但是后面其他相同的查询就会直接使用缓存下来的数据
 * 1个SqlSession就是1个Connection,就是一个数据库的链接
 * request作用域
 */
public class Demo {
    EmpMapper mapper = MybatisUtil.getMapper(EmpMapper.class);
    @Test
    public void t1(){
        // 获取了一个数据库的链接
        SqlSession session = MybatisUtil.getSession();
        //通过这个链接获取了EmpMapper 实现 操作就是上面的Sqlsession提供数据库链接进行的操作
        EmpMapper mapper = session.getMapper(EmpMapper.class);

        System.out.println(mapper.getAll());
        System.out.println(session);
        // 关闭已有链接
        MybatisUtil.close(session);
        System.out.println("=================");
        System.out.println("=================");
        //在同一个链接中 操作了数据的相同的操作
        // 重新获取sqlsession 重新连接
        MybatisUtil.close(session);
        session = MybatisUtil.getSession();
        System.out.println(session);
        EmpMapper mapper1 = session.getMapper(EmpMapper.class);
        System.out.println(mapper1.getAll());
        mapper1.deleteEmp(1046);
        session.commit();
        System.out.println("=================");
        System.out.println("=================");
        MybatisUtil.close(session);
        session = MybatisUtil.getSession();
        System.out.println(session);
        EmpMapper mapper2 = session.getMapper(EmpMapper.class);
        System.out.println(mapper2.getAll());
//        System.out.println(mapper1.getEmpByEno(1022));
    }
    @Test
    public void t2(){
        // 这个静态方法,下面的一行就必须是查询语句
        PageHelper.startPage(7,2);
        List<Emp> all = mapper.getAll();
//        List<Emp> list = mapper.getEmpByKey("乔");
//        list.stream().forEach(System.out::println);
        PageInfo<Emp> info= new PageInfo<>(all);

        System.out.println(info);


//        List<Emp> all = mapper.getAll();
//        all.stream().forEach(System.out::println);

    }

}
